package com.example.springbootdemo.lifecycle;

import org.springframework.beans.factory.DisposableBean;
import org.springframework.beans.factory.InitializingBean;

public class Car implements DisposableBean, InitializingBean {

    public Car(){
        System.out.println("执行 Car 构造函数");
    }

    public void init() {
        System.out.println("@Bean 中指定 initMethod");
    }

    // 单例中，spring 关闭时调用销毁。 多例中，spring 不会调用销毁，需要手动销毁
    public void detory() {
        System.out.println("@Bean 中指定 destroyMethod");
    }

    // 继承 DisposableBean, InitializingBean 前置和销毁bean逻辑
    @Override
    public void destroy() throws Exception {
        System.out.println("DisposableBean 继承接口形式");
    }

    @Override
    public void afterPropertiesSet() throws Exception {
        System.out.println("InitializingBean 继承接口形式");
    }
}
